<?php
class RssAtom
{
	/**
	 * номер в базе
	 *
	 * @var int
	 */
	var $id;
	/**
	 * заголовок
	 *
	 * @var string
	 */
	var $title;
	/**
	 * ссылка на эту запись
	 *
	 * @var string
	 */
	var $url;
	/**
	 * дата публикации
	 *
	 * @var int
	 */
	var $date;
	var $edited_date;
	/**
	 * текст записи
	 *
	 * @var string
	 */
	var $body;
	/**
	 * Ссылка на feed
	 *
	 * @var RssFeed
	 */
	var $feed;
	/**
	 * автор записи
	 *
	 * @var string
	 */
	var $author;
	var $file_list=array();
	var $tag_list=array();
	//var $images=array();
	var $status;
	function RssAtom()
	{
	}
	
	function GetBody()
	{
		if (preg_match_all("/<img.+?src\=\"%img(\d+)%\".*?>/",$this->body,$res,PREG_PATTERN_ORDER))
		{
			foreach ((array)$res[1] as $k=>$v)
			{
				$this->body=str_replace("%img$k%",'/agro/'.$this->file_list[$k]->GetUrl(),$this->body);
			}
		}
		return $this->body;
	}
	
	function AddTag($tag)
	{
		$this->tag_list[]=$tag;
	}
	
	/**
	 * Возвращает список файлов взятых из $this->body
	 *
	 * @return array
	 */
	function GetImageFromBody()
	{
		$files=array();
		if (preg_match_all("/(<img.+?src\=\"(.*?)\".*?>)/",$this->body,$res,PREG_PATTERN_ORDER))
		{
			foreach ((array)$res[2] as $image_url)
			{
				$file=new RssFile();
				$file->title='';
				$file->orig_src=$image_url;
				$files[]=$file;
			}
		}
		return $files;
	}
	
	/**
	 * Сохраняет картинки из body на локальный диск, и делаем на них ссылки из body
	 *
	 */
	function ImportImage()
	{
		global $files_dir,$dir;
		$this->file_list=array();
		// директория для сохранения файлов
		$dir_for_images=base64_encode(
			strtr(
				$this->feed->url,
				array(
					'/'=>'',
					':'=>'',
				)
			)
		);
		//print $dir_for_images."<br/>";
		$valid_extension=array("jpg","gif","png");
		if (preg_match_all("/(<img.+?src\=\"(.*?)\".*?>)/",$this->body,$res,PREG_PATTERN_ORDER))
		{
			foreach ((array)$res[2] as $k=>$v)
			{
				$url=parse_url($v);
				$dir_for_image=$url['host'];
				$f=substr($url['path'],1);
				if (preg_match("/^\/(.*?)\.(.\w{2,4})$/",$url['path'],$res))
				{
					$f=$res[1];
					$e=$res[2];
				}
				if (!in_array($e,$valid_extension))
				{
					continue;
				}
				$new_file_name=$dir_for_image."/".base64_encode($f).".".$e;
				unset($f);
				unset($e);
				
				print $new_file_name."<br/>";
				// сохраняем картинку на диск
				$new_file_name="/".base64_encode($v).".jpg";
				//$new_file_name="/".$url."/".date("Y-m-d",$this->date)."/".get_random_string(5).".jpg";
				if (!is_file($dir.$files_dir.$new_file_name))
				{
					$sock=new Socket($v);
					$src=$sock->GetText();
					my_mkdir_r(dirname($files_dir.$new_file_name));
					if ($f=fopen($dir.$files_dir.$new_file_name,"wb"))
					{
						fwrite($f,$src);
						fclose($f);
					}
				}
				if (is_file( $dir.$files_dir.$new_file_name ))
				{
					$file=new RssFile();
					$file->orig_src=$v;
					$file->filename=$files_dir.$new_file_name;
					$this->file_list[]=$file;
					$r=str_replace($v,"%img$k%",$res[1][$k]);
					$this->body=str_replace($res[1][$k],$r,$this->body);
				}
			}
		}
	}
}
?>